package javaNIO1.regularExpressions;

import java.nio.CharBuffer;
import java.util.regex.Pattern;

/**
 * Created with Intel IDEA.
 *
 * @Auther: gjt
 * @Date: 2024/7/28 14:15
 */
public class CharSeq {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("hello World!");
        // 间接分配字符型缓冲区
        // 底层也会 先创建一个临时直接缓冲区，把这个缓冲区的数据复制到临时直接缓冲区中，使用临时直接缓冲区执行底层I/O操作，
        // 临时直接缓冲区离开作用域，并回收
        CharBuffer charBuffer = CharBuffer.allocate(20);

        // 直接来源于String
        CharSequence charSequence = "hello World!";
        printCharSequence("1" + charSequence);

        // 来源于StringBuffer
        charSequence = stringBuffer;
        printCharSequence("2" + charSequence);

        // 更改StringBuffer的长度
        stringBuffer.setLength(0);
        stringBuffer.append("Goodbye cruel word!");
        // 相同，不变的“CharSequence”产生了不同的结果
        printCharSequence(charSequence);


        // 从CharBuffer中导出CharSequence
        charSequence =charBuffer;
        charBuffer.put("xxxxxxxxxxxxxx");
        charBuffer.clear();

        charBuffer.put("hello World!");
        charBuffer.flip();
        printCharSequence(charSequence);

        charBuffer.mark();
        charBuffer.put("Seeya");
        charBuffer.reset();
        printCharSequence(charSequence);


        charBuffer.clear();
        printCharSequence(charSequence);
        // 更改基础CharBuffer 回反应到只读的CharSequence接口中


        Pattern compile = Pattern.compile("[A-Z][a-zA-Z]*", Pattern.CASE_INSENSITIVE | Pattern.UNIX_LINES);

        /**
         *  [A-Z]: 匹配任何大写字母
         *  [a-zA-Z]*:匹配零个或者多个小写或者大写字母。 *：代表前面的字符或者字符组可以出现任意次数，包括零次
         *  例如：Apple,Banana,Z 符合此模式
         *
         *  模式标志(是比特掩码):
         *      Pattern.CASE_INSENSITIVE:大小写都一样
         *      Pattern.UNIX_LINES:匹配任何Unix行结束符，包括\n和\r\n
         */
    }

    private static void printCharSequence(CharSequence charSequence) {
        System.out.println("length=" + charSequence.length() + ",content=" + charSequence.toString() + "'");
    }
}
